package ai.leinao.notify.core;

import ai.leinao.notify.core.enums.NotifyType;
import ai.leinao.notify.core.template.Template;
import lombok.NonNull;

/**
 * 通知器管理器
 *
 * @author zhong.wang
 * @date 2025/7/7
 */
public interface NotifierRegistry {
    /**
     * 获取通知器
     *
     * @param notifyType 通知器类型
     * @param notifyId 通知器id
     * @return 通知器
     * @param <T>
     */
    <T extends Template> Notifier<T> getNotifier(@NonNull NotifyType notifyType, @NonNull String notifyId);

    /**
     * 创建通知器
     *
     * @param properties 通知器属性
     * @return 通知器
     * @param <T>
     */
    <T extends Template> Notifier<T> createNotifier(@NonNull NotifyProperties properties);
}
